#include<iostream>
#include<set>
#include<algorithm>
using namespace std;

/*
一时间网上一片求救声，急问这个怎么破。其实这段代码很简单，index数组就是arr数组的下标，
index[0]=2 对应 arr[2]=1，index[1]=0 对应 arr[0]=8，index[2]=3 对应 arr[3]=0，
以此类推…… 很容易得到电话号码是18013820100。

本题要求你编写一个程序，为任何一个电话号码生成这段代码 —— 
事实上，只要生成最前面两行就可以了，后面内容是不变的。

为输入的号码生成代码的前两行，其中arr中的数字必须按递减顺序给出。
*/

struct intComp {
	bool operator() (const int& lhs, const int& rhs) const{
		return lhs > rhs;
	}
};

set<int,intComp> s;
int main(){
    string tel;
    cin>>tel;
    for(int i=0;i<11;i++)
        s.insert((int)tel[i]);//存入数字的ASCII码
    int len=s.size();
    //arr记录出现的数字的排名
    int arr[129],j=0;
    cout<<"int[] arr = new int[]{";
    for(int i:s){
        arr[i]=j;
        j++;
        cout<<(char)i;
        if(j<=len-1)
            cout<<",";   
    }
    cout<<"};\n";
    cout<<"int[] index = new int[]{";
    for(int i=0;i<11;i++){
        cout<<arr[(int)tel[i]];
        if(i<=9)
            cout<<",";
    }
    cout<<"};\n";
    return 0;
}